﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Shapes;
using Innvoice.Logica.GestorObject;
using Innvoice.Logica.GestorDB;
using Innvoice.BaseDeDatos.innvoicedbDataSetTableAdapters;
using Innvoice.Ws.Clientes.Reportes;


namespace Innvoice.Ws.Clientes
{
    /// <summary>
    /// Lógica de interacción para WPresentarClientes.xaml
    /// </summary>
    public partial class WPresentarClientes : Window
    {
        private ClienteDB misClientes = new ClienteDB();
        private ProvinciaDB misProvincias = new ProvinciaDB();
        private PaisDB misPaises = new PaisDB();
        private LocalidadDB misLocalidades = new LocalidadDB();
        private List<Cliente> varCliente = new List<Cliente>();
        private List<Provincia> varProvincias = new List<Provincia>();
        private List<Pais> varPaises = new List<Pais>();
        private List<Localidad> varLocalidad = new List<Localidad>();
        private int miEmrpesa = 0;

        public WPresentarClientes(int nro_Empresa)
        {
            InitializeComponent();
            miEmrpesa = nro_Empresa;
        }

        private void Window_Loaded(object sender, RoutedEventArgs e)
        {

            //Seteo los paises
            varPaises.Clear();
            varPaises = misPaises.obtenerPaises();
            cbxPais.ItemsSource = varPaises;

            //Seteo las Provincias 
            varProvincias.Clear();
            varProvincias = misProvincias.obtenerProvincia((int) cbxPais.SelectedValue);
            cbxProvincias.ItemsSource = varProvincias;
            cbxProvincias.SelectedIndex = 0;


            //Seteo las Localidades
            varLocalidad.Clear();
            varLocalidad = misLocalidades.obtenerLocalidad((int) cbxProvincias.SelectedValue);
            cbxLocalidad.ItemsSource = varLocalidad;
            cbxLocalidad.SelectedIndex = 0;



            //revisar mas adelante =====================================
            varCliente.Clear();
            varCliente = misClientes.ObtenerClientesXProvincia(2);
            dgclientes.ItemsSource = varCliente;
            txtDato.Text = varCliente.Count().ToString() + " - Clientes Listados";

        }

        private void btnBuscarProvincias_Click(object sender, RoutedEventArgs e)
        {
            try
            {
                varCliente.Clear();
                varCliente = misClientes.ObtenerClientesXProvincia(Convert.ToByte(cbxProvincias.SelectedValue.ToString()));

                if (varCliente.Count == 0)
                {
                    dgclientes.ItemsSource = null;
                    txtDato.Text = varCliente.Count().ToString() + " - Clientes Listados";
                }
                else
                {
                    dgclientes.ItemsSource = varCliente;
                    txtDato.Text = varCliente.Count().ToString() + " - Clientes Listados";
                }

            }
            catch (Exception)
            {

                MessageBox.Show("Error:  btnBuscar - WPresentaClientes", "Cuidado", MessageBoxButton.OK);
            }
        }
  
        private void cbxProvincias_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            try
            {
                varLocalidad.Clear();
                varLocalidad = misLocalidades.obtenerLocalidad((int)cbxProvincias.SelectedValue);
                cbxLocalidad.ItemsSource = varLocalidad;
                cbxLocalidad.SelectedIndex = 0;

            }
            catch (Exception)
            {

                MessageBox.Show("error: WpresentarClietnes cbxProvincias_SelectionChanged: ", "Ciudado", MessageBoxButton.OK);
            }
        }

        private void btnAgregarNuevo_Click(object sender, RoutedEventArgs e)
        {
            try
            {
                Cliente miCliente = new Cliente();
                WCliente miVentanaCliente = new WCliente(miCliente, miEmrpesa, 0);
                miVentanaCliente.Show();
            }
            catch (Exception m)
            {
                MessageBox.Show("Class :: WPresentarClientes :: btnAgregarNuevo :: Error: " + m.Message, "Error", MessageBoxButton.OK);
            }
        }

        private void btnGenerarListado_Click(object sender, RoutedEventArgs e)
        {
            FReporte rp = new FReporte(varCliente);
            rp.Show();
        }

        private void btnSalir_Click(object sender, RoutedEventArgs e)
        {
            this.Close();
        }

        private void btnVerDatosCliente_Click(object sender, RoutedEventArgs e)
        {
            try
            {
                Cliente miCliente;
                if ((varCliente.Count > 0) && (dgclientes.SelectedIndex >= 0))
                {
                    miCliente = varCliente[dgclientes.SelectedIndex];
                    WCliente miVentanaCliente = new WCliente(miCliente, miEmrpesa, 1);
                    miVentanaCliente.Show();
                }
                else
                {
                    MessageBox.Show("No hay datos o no has seleccionado ninguno", "Info", MessageBoxButton.OK);
                }
            }
            catch (Exception mException)
            {
                MessageBox.Show("Class :: WPresentarClientes :: btnVerDatosCliente :: Error: " + mException.Message, "Error", MessageBoxButton.OK);
            }
        }

        private void btnBuscarLocalidad_Click(object sender, RoutedEventArgs e)
        {
            try
            {
                varCliente.Clear();
                varCliente = misClientes.ObtenerClientesXLocalidad(Convert.ToByte(cbxLocalidad.SelectedValue.ToString()));

                if (varCliente.Count == 0)
                {
                    dgclientes.ItemsSource = null;
                    txtDato.Text = varCliente.Count().ToString() + " - Clientes Listados";
                }
                else
                {
                    dgclientes.ItemsSource = varCliente;
                    txtDato.Text = varCliente.Count().ToString() + " - Clientes Listados";
                }

            }
            catch (Exception)
            {

                MessageBox.Show("Error:  btnBuscar - WPresentaClientes", "Cuidado", MessageBoxButton.OK);
            }
        }

        private void btnBuscar_Click(object sender, RoutedEventArgs e)
        {            
            ClienteDB miAccesoCliente = new ClienteDB();
            string rs = "%" + txtRazonSocial.Text + "%";
            byte mActivo = 0;
            if (chkActivos.IsChecked.Value)
                mActivo = 1;
            else
                mActivo = 0;

            varCliente.Clear();

            varCliente = miAccesoCliente.filtrarClientes(mActivo
                                                         , Convert.ToInt16(cbxLocalidad.SelectedValue)
                                                         , Convert.ToInt16(cbxProvincias.SelectedValue)
                                                         , Convert.ToInt16(cbxPais.SelectedValue)
                                                         , rs);

            dgclientes.ItemsSource = varCliente;
            txtDato.Text = varCliente.Count().ToString() + " - Clientes Listados";
        }


        private void AgregarNuevo_Cliente()
        {
            try
            {
                Cliente miCliente = new Cliente();
                WCliente miVentanaCliente = new WCliente(miCliente, miEmrpesa, 0);
                miVentanaCliente.Show();
            }
            catch (Exception m)
            {
                MessageBox.Show("Class :: WPresentarClientes :: btnAgregarNuevo :: Error: " + m.Message, "Error", MessageBoxButton.OK);
            }
        }

        private void modificar_Cliente ()
        {
            try
            {
                Cliente miCliente;
                if ((varCliente.Count > 0) && (dgclientes.SelectedIndex >= 0))
                {
                    miCliente = varCliente[dgclientes.SelectedIndex];
                    WCliente miVentanaCliente = new WCliente(miCliente, miEmrpesa, 1);
                    miVentanaCliente.Show();
                }
                else
                {
                    MessageBox.Show("No hay datos o no has seleccionado ninguno", "Info", MessageBoxButton.OK);
                }
            }
            catch (Exception mException)
            {
                MessageBox.Show("Class :: WPresentarClientes :: btnVerDatosCliente :: Error: " + mException.Message, "Error", MessageBoxButton.OK);
            }
        }

        private void Listado_Cliente()
        {
            FReporte rp = new FReporte(varCliente);
            rp.Show();
        }

        private void btnVerDatos_KeyDown(object sender, KeyEventArgs e)
        {
            switch (e.Key.ToString().ToUpper())
            {
                case "F1":
                    break;
                case "F2":
                    AgregarNuevo_Cliente();
                    break;
                case "F3":
                    modificar_Cliente();
                    break;
                case "F4":
                    Listado_Cliente();
                    break;
                case "ESCAPE":
                    this.Close();
                    break;
                case "F12":
                    this.Close();
                    break;
                default:
                    return;
            }
        }


    }
}
